# 编译器
CC = arm-linux-g++

# 编译选项
CFLAGS = -lm -lpthread -Wall -Wextra -I inc -std=c++11

# 源文件目录
SRCDIR = src

# 可执行文件名
EXEC = main

# 构建目录
BUILDDIR = build

# 获取src目录下所有.cpp文件
SRCS = $(shell find $(SRCDIR) -type f -name "*.cpp")

# 将.cpp文件替换为.o文件
OBJS = $(SRCS:$(SRCDIR)/%.cpp=$(BUILDDIR)/%.o)

# 默认目标
all: $(BUILDDIR)/$(EXEC)

# 生成可执行文件
$(BUILDDIR)/$(EXEC): $(OBJS)
	$(CC) $(CFLAGS) $^ -o $@
	@echo "编译完成！"

# 编译.cpp文件为.o文件
$(BUILDDIR)/%.o: $(SRCDIR)/%.cpp | $(BUILDDIR)
	$(CC) $(CFLAGS) -c $< -o $@

# 创建构建目录
$(BUILDDIR):
	mkdir -p $@

# 清理目标文件和可执行文件
clean:
	rm -rf $(BUILDDIR)
	@echo "清理成功！"

.PHONY: all clean